layui.use(['table','form'], function(){
  var table = layui.table;
  var layer = layui.layer;
  var form = layui.form;
  
  // 渲染dataType
  table.render({
    elem: '#dataType'
    ,url: ctx+'/rbac/dict/type/pageList' //数据接口
    ,page: true //开启分页
    ,cols: [[ //表头
       {field: 'id', title: 'ID',hide:true}
      ,{field: 'typeName', title: '类别名称', width:'25%',align:'center'}
      ,{field: 'typeDesc', title: '类别标识符', width:'25%',align:'center'}
      ,{field: 'status', title: '状态', width:'25%',align:'center',templet:function(data){
    	  if(data.status == 0){
    		  return "<span >冻结</span>";
    	  }else{
    		  return "<span >激活</span>";
    	  }
      }}
      ,{field: 'ops', title: '操作', width:'33%',align:'center',templet : function(data){
    	  var str = '';
    	  if(data.status == 0){
    		  str = "<button class='layui-btn layui-btn-sm layui-btn-normal' lay-event='onOrOff'>激活</button>";
    	  }else{
    		  str = "<button class='layui-btn layui-btn-sm layui-btn-danger' lay-event='onOrOff'>冻结</button>";
    	  }
    	  
    	  str += "<button class='layui-btn layui-btn-sm layui-btn-warm' lay-event='update'>更新</button>";
    	  return str;
      }}
      
    ]],
    toolbar : '#dataTypeToolBar',
    defaultToolbar :[],
    
  });
  
  table.on('toolbar(dataType)', function(obj){
	  var checkStatus = table.checkStatus(obj.config.id);
	  switch(obj.event){
	    case 'addDataType':
	    	addDateType();
	    break;
	  };
  });
  
  table.on('toolbar(dict)', function(obj){
	  var checkStatus = table.checkStatus(obj.config.id);
	  switch(obj.event){
	    case 'addDict':
	    	addDict();
	    break;
	  };
  });
  var layerIndex;
  //新增字典内容
  function addDict(){
	  layerIndex = layer.open({
  		  title : '新增字典',
  		  type: 1,
  		  //area: ['400px', '420px'],
  		  content: $('#dictDialog') 
      });
  }
  
  // 新增字典类型
  function addDateType(){
      layer.open({
          title : '新增字典类型',
          type: 1,
          content: $('#addDictDialog')
      });
  }

  // 字典类型提交
    form.on('submit(dict_type_add)', function(data){
    	var loadingIndex = layer.load(2);
         $.ajax({
           url:  ctx+'/rbac/dict/type/add',
            data : data.field,
            success : function(res){
				if(res.success){
					layer.msg(res.msg);
					layer.closeAll();
					table.reload('dataType');
					$('#reset').click();
				}else{
					layer.msg(res.msg,{icon:2});
				}
            }
        });
        return false;
    });

    // 数据字典类型查询
	$('#search_dict_type').click(function(){
        table.reload('dataType', {
            where: { //设定异步数据接口的额外参数，任意设
                'typeName': $('#search_type_name').val(),
                'typeDesc': $('#search_type_desc').val()
            },
            page: {
            curr: 1 //重新从第 1 页开始
        }
        });
		return false;
	});

  table.on('tool(dict)',function(obj){
	  var data = obj.data; 
	  var layEvent = obj.event; 
	  if(layEvent == 'delete'){
		  deleteDict(data.id);
	  }else if(layEvent == 'update'){
		  updateDict(data);
	  }
  });

  var dict_type_id = null;

  // 表格单击事件
    table.on('row(dataType)', function(obj){
        dict_type_id = obj.data.id ;
        table.render({
            elem: '#dict'
            ,url: ctx+'/rbac/dict/list?dictType=' +obj.data.id
            ,page: true
            ,cols: [[
                {field: 'id', title: 'ID',hide:true}
                ,{field: 'index', title: '序号',type: 'numbers'}
                ,{field: 'typeName', title: '类别名称', width:'20%',align:'center'}
                ,{field: 'dictKey', title: '字典键', width:'20%',align:'center'}
                ,{field: 'dictValue', title: '字典值', width:'20%',align:'center'}
                ,{field: 'dictRemark', title: '备注', width:'20%',align:'center'}
                ,{field: 'ops', title: '操作', width:'20%',align:'center',templet: '#dictTool'}
            ]],
            defaultToolbar :[],
            toolbar : '#dictToolbar'
        });
    });
  
  
  //更新字典内容
  function  updateDict(data){
	  form.val("formFilterUpdate", {
		 'dictKey': data.dictKey,
		 'dictValue' : data.dictValue,
		 'dictType':data.dictType,
		 'dictRemark':data.dictRemark
	  });
	  $('#dictDialogUpdate').find('select').html("<option value='"+data.dictType+"'>"+data.typeName+"</option>");
	  $('#updateId').val(data.id);
	  form.render('select');
	  layerIndex = layer.open({
  		  title : '修改字典',
  		  type: 1,
  		  //area: ['400px', '420px'],
  		  content: $('#dictDialogUpdate') 
      });
  }
  
  
  //删除字典
  function deleteDict(id){
	  layer.confirm('确定要删除吗?', function(index){
		  commons.ajax({
			  url : ctx+'/rbac/dict/delete',
			  data : {
				  'id' : id
			  },
			  success : function(res){
				  layer.msg(res.msg);
				  layer.close(index);
				  table.reload('dict');
			  }
		  });
		});  
  }
  
  table.on('tool(dataType)', function(obj){ 
	  var data = obj.data; 
	  var layEvent = obj.event; 
	 
	  // 冻结或激活字典类型
	  if(layEvent === 'onOrOff'){ //查看
		  commons.ajax({
			  url : ctx + '/rbac/dict/type/onOrOff',
			  data : {
				  'id' : data.id
			  },
			  success : function(res){
				  layer.msg(res.msg);
				  // 刷新列表
				  table.reload('dataType');
				  table.reload('dict');
				  refreshDictType();
			  }
		  });
	  }else if(layEvent === 'update'){
		  layer.prompt({
			  formType: 0,
			  title: '字典类别名称',
			}, function(value, index, elem){
				$.ajax({
					url : ctx+'/rbac/dict/type/update',
					data : {
						'typeName' : value,
						'id' : data.id
					},
					dataType : 'json',
					success : function(res){
						if(res.success == false){
							layer.msg(res.msg);
						}else{
							layer.msg(res.msg);
							layer.close(index);
							// 刷新列表
							table.reload('dataType');
                            table.reload('dict');
							refreshDictType();
						}
					}
				});
			 
		  });
	  }
	  
	});
  
  
  // 刷新字典类别下拉框
  function refreshDictType(){
	  $.ajax({
		  url : ctx+'/rbac/dict/type/list',
		  dataType : 'json',
		  data : {type: 1},
		  success : function(res){
			  var str = '';
			  $(res).each(function(i,val){
				  str += " <option value='"+val.id+"'>"+val.typeName+"</option>"
			  });
			  $('#dictTypeSelect').html(str);
			  form.render('select')
		  }
	  });
  }
  
  //提交字典值
  form.on('submit(*)', function(data){
  	if(dict_type_id == null){
  		layer.msg('请先选中字典类别',{icon:2});
  		return flase;
	}
	var loadIndex = layer.load(2);
	  // 提交数据
	  commons.ajax({
		  url : ctx+'/rbac/dict/add?dictType='+dict_type_id,
		  data : data.field,
		  success : function(res){
			  layer.msg(res.msg);
			  layer.close(layerIndex);
			  table.reload('dict');
			  layer.close(loadIndex);
			  $('#reset').click();
		  }
	  });
	  return false; 
  });
  
  //更新字典值
  form.on('submit(update)', function(data){
      var loadingIndex = layer.load(2);
	  commons.ajax({
		  url : ctx+'/rbac/dict/update',
		  data : data.field,
		  success : function(res){
			  layer.msg(res.msg);
			  layer.close(layerIndex);
			  table.reload('dict');
			  layer.close(loadingIndex);
		  }
	  });
	  return false; 
  });
  
  //刷新下拉框
  refreshDictType();
  
  // 清空标签的内容
  function formReset(){
  	$('#reset').click();
  }

  // 默认情况下直接点击第一行,不然右边的表格不会渲染
  
});